It is possible in Emacs to define abbrevs based on the contents of the buffer. Sophisticated templates can be defined using the Emacs abbreviation facilities. See Abbreviations, for details.
Emacs also provides Dynamic
Abbreviations. Given a partial word, Emacs will search the buffer
to find an extension for this word. For instance, one can type
‘Abbreviations’ by typing
‘A’, followed
by a keystroke that completed the ‘A’ to ‘Abbreviations’. Repeated typing will
search further back in the buffer, so that one could get
‘Abbrevs’ by
repeating the keystroke, which appears earlier in the text. Emacs
binds this to <ESC> /, so you will have to find
a key and bind the function dabbrev-expand to that
key. Facilities like this make Vi's :ab command
obsolete.